package editorarquivobmg.model;

import editorarquivobmg.util.ManipuladorDados;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;

public class DAT1 implements ISalvamento{

    private ArrayList<Texto> textos = new ArrayList<Texto>();
    private byte[] cabecalho = null;
    private int size = 0;

    public DAT1(ArrayList<Texto> textos, byte[] cabecalho, int size) {
        this.textos = textos;
        this.size = size;
        this.cabecalho = cabecalho;
    }

    public ArrayList<Texto> getTextos() {
        return textos;
    }

    public int getSize() {
        return size;
    }

    public byte[] getDataTexto(int pos) {
        return this.textos.get(pos).getData();
    }

    public int getSizeTexto(int pos) {
        return this.textos.get(pos).getSize();
    }

    public int modificarTexto(byte[] data, int pos) {
        int diferenca = this.textos.get(pos).modificarTexto(data);
        this.size += diferenca;
        return diferenca;
    }

    @Override
    public void salvar(File file) throws Exception {

        int temp = 16 - size % 16;
        if (temp != 16) {
            textos.get(textos.size() - 1).acrescentarBytes(temp);
        } else {
            temp = 0;
        }
        this.size += temp;

        ManipuladorDados.gravarTamanho(cabecalho, 4, size);
        FileOutputStream in = new FileOutputStream(file, true);
        in.write(cabecalho);
        in.close();

        for (Texto iTextos : this.textos) {
            iTextos.salvar(file);
        }
    }
}